When the Array Fills Up

Circular Arrays


원형 배열(circular array)은 인덱스가 배열 끝을 지나면 0번 칸으로 돌아오도록 계산해, 앞쪽 삭제로 생긴 빈 칸을 원소 이동 없이 다시 쓴다.

첫 원소 칸 j논리 순서에서 첫 원소가 들어 있는 물리 칸이다.
(j + i) mod 용량i번째 원소가 들어 있는 실제 칸이다.
다음 추가 칸(j + n) mod 용량 칸에 새 원소를 쓴다.

뒤에 추가(enqueue)와 앞에서 삭제(dequeue)는 원소를 옮기지 않고 j와 n만 바꾼다

추가와 삭제가 일어날 때마다 j, 다음 추가 칸, 원소 수가 바뀌지만 남은 원소는 제자리에 있다.

물리 배열

원형 도식과 물리 배열은 같은 칸을 두 번 그린 것이다. 초록 실선은 첫 원소 칸 j, 초록 점선은 다음에 추가할 칸, 짙은 파랑 테두리는 아래 절에서 고른 논리 원소다.

논리 인덱스(logical index) i는 물리 인덱스(physical index) (j + i) mod 용량에 있다

위 절의 j와 원소 수 n을 그대로 쓴다. 같은 상태에서도 논리 인덱스 i가 달라지면 대응하는 물리 칸이 달라진다.

(j + i) mod 용량

논리 i물리 인덱스값
표의 강조 행이 고른 논리 인덱스다.